package javaer.starter.core.metadata;

import javaer.starter.base.domain.dto.DependencyDTO;
import javaer.starter.base.domain.dto.PomParent;
import javaer.starter.constant.SymbolEnum;
import lombok.AccessLevel;
import lombok.Data;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;

import java.io.Serializable;
import java.util.Map;
import java.util.Set;

/**
 * pom.xml文件
 *
 * @author yangzhen
 * @date 2021/11/17 14:56
 * @since 1.0.0
 */
@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
@Accessors(chain = true)
public class PomXml implements Serializable {

    /**
     * 是否是父pom
     */
    Boolean imRootPom = Boolean.FALSE;

    /**
     * 是否是启动模块
     */
    Boolean imStarterPom;

    PomParent parent;

    /**
     * 模块的groupId = parent.groupId
     */
    String groupId;

    /**
     * 模块的artifactId
     */
    String artifactId;

    /**
     * 模块的版本 = parent.version
     */
    String version;
    /**
     * 项目描述
     */
    String description;
    /**
     * 属性
     */
    Map<String, String> properties;

    /**
     * 当前pom包含的module
     */
    Set<String> modules;

    /**
     * 包含的模块依赖
     */
    Set<String> dependencyModules;
    /**
     * 依赖id管理
     */
    Set<DependencyDTO> dependencyManagement;
    /**
     * 当前pom包含的依赖
     */
    Set<DependencyDTO> dependencies;
    /**
     * 依赖id集合
     */
    Set<String> dependencyIdSet;

    DistributionManagement distributionManagement;

    /**
     * 启动类
     */
    String mainClass;
    /**
     * 模块唯一标识
     */
    String moduleId;
    /**
     * 基础包名
     */
    String basePackage;
    /**
     * 模块包名
     */
    String modulePackage;

    public String getBaseArtifactId() {
        if (imRootPom) {
            return artifactId;
        }
        return parent.getArtifactId();
    }

    public String getBasePackage() {
        return basePackage;
    }
}
